#!/usr/bin/env tclsh

set testdir [file dirname $argv0]
source $testdir/tester.tcl

do_execsql_test json5-ecma-script-1 {
    select json('{a:5,b:6}') ;
} {{{"a":5,"b":6}}}

do_execsql_test json5-ecma-script-2 {
   SELECT json('{ MNO_123$xyz : 789 }');
} {{{"MNO_123$xyz":789}}}

do_execsql_test json5-with-single-trailing-comma-valid {
    select json('{"a":5, "b":6, }');
} {{{"a":5,"b":6}}}

do_execsql_test json5-single-quoted {
    SELECT json('{"a": ''abcd''}');
} {{{"a":"abcd"}}}

do_execsql_test json5-hexadecimal-1 {
   SELECT json('{a: 0x0}')
} {{{"a":0}}}

do_execsql_test json5-hexadecimal-2 {
   SELECT json('{a: 0xabcdef}')
} {{{"a":11259375}}}

do_execsql_test json5-hexadecimal-2 {
   SELECT json('{a: -0xabcdef}')
} {{{"a":-11259375}}}

do_execsql_test json5-number-1 {
   SELECT json('{x: 4.}')
} {{{"x":4.0}}}

do_execsql_test json5-number-2 {
   SELECT json('{x: +4.}')
} {{{"x":4.0}}}

do_execsql_test json5-number-3 {
   SELECT json('{x: -4.}')
} {{{"x":-4.0}}}

do_execsql_test json5-number-5 {
   SELECT json('{x: Infinity}')
} {{{"x":9e999}}}

do_execsql_test json5-number-6 {
   SELECT json('{x: -Infinity}')
} {{{"x":-9e999}}}

do_execsql_test json5-multi-comment {
   SELECT json(' /* abc */ { /*def*/ aaa /* xyz */ : // to the end of line
          123 /* xyz */ , /* 123 */ }')
} {{{"aaa":123}}}

do_execsql_test json_array_str {
   SELECT json_array('a')
} {{["a"]}}

do_execsql_test json_array_numbers {
   SELECT json_array(1, 1.5)
} {{[1,1.5]}}

do_execsql_test json_array_numbers_2 {
   SELECT json_array(1., +2., -2.)
} {{[1.0,2.0,-2.0]}}

do_execsql_test json_array_null {
   SELECT json_array(null)
} {{[null]}}

do_execsql_test json_array_not_json {
   SELECT json_array('{"a":1}')
} {{["{\"a\":1}"]}}

do_execsql_test json_array_json {
   SELECT json_array(json('{"a":1}'))
} {{[{"a":1}]}}

do_execsql_test json_array_nested {
   SELECT json_array(json_array(1,2,3), json('[1,2,3]'), '[1,2,3]')
} {{[[1,2,3],[1,2,3],"[1,2,3]"]}}
